package com.ruoyi.order.domain.dto;

import lombok.Data;
import java.util.List;

/**
 * 滚动分页响应DTO
 *
 * @author ruoyi
 * @date 2025-08-21
 */
@Data
public class ScrollPageResponse<T> {

    /**
     * 数据列表
     */
    private List<T> data;

    /**
     * 下一页游标，如果没有更多数据则为null
     */
    private Long nextCursor;

    /**
     * 是否还有更多数据
     */
    private Boolean hasMore;

    /**
     * 当前页数据条数
     */
    private Integer count;

    /**
     * 构造函数
     */
    public ScrollPageResponse() {
    }

    /**
     * 构造函数
     */
    public ScrollPageResponse(List<T> data, Long nextCursor, Boolean hasMore) {
        this.data = data;
        this.nextCursor = nextCursor;
        this.hasMore = hasMore;
        this.count = data != null ? data.size() : 0;
    }

    /**
     * 静态工厂方法，创建响应对象
     */
    public static <T> ScrollPageResponse<T> of(List<T> data, Long nextCursor, Boolean hasMore) {
        return new ScrollPageResponse<>(data, nextCursor, hasMore);
    }
}